﻿// --------------------------------------------------------------------------------------
// <copyright file="ProductModel.cs" company="NGroup">
// Copyright (c) NGroup. All rights reserved.
// </copyright>
// --------------------------------------------------------------------------------------
// <history>
//     <change who="Bui Thanh Nam" date="2013.12.07">Create</change>
// </history>
// --------------------------------------------------------------------------------------

namespace NGroup.VTL.Models
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using NGroup.VTL.Core.Const;
    using NGroup.VTL.WebCore;
    using System.Configuration;

    /// <summary>
    /// Class ProductModel.
    /// </summary>
    public class ProductModel
    {
        private static readonly string webDomain = ConfigurationManager.AppSettings["VTLBASEURL"];

        public int? ProductID { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Loại hàng không được bỏ trống")]
        public int? SupTypeID { get; set; }

        public string SupTypeIDString
        {
            get
            {
                var supItem = AppContentTypes.All.Find(e => !e.SupTypeID.HasValue && e.TypeID.Value == SupTypeID);
                return supItem != null ? supItem.UniqueString : null;
            }
        }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Nhóm hàng không được bỏ trống")]
        public int? TypeID { get; set; }

        public string TypeIDString
        {
            get
            {
                var childItem = AppContentTypes.All.Find(e => e.SupTypeID.HasValue && e.TypeID.Value == TypeID);
                return childItem != null ? childItem.UniqueString : null;
            }
        }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Liên kết không được bỏ trống")]
        [StringLength(500, MinimumLength = 5, ErrorMessage = "Liên kết phải nhiều hơn 5 ký tự & không quá 500 ký tự")]
        public string UniqueString { get; set; }

        public string MetaContent { get; set; }

        public string MetaContentEn { get; set; }

        public string MetaDescription { get; set; }

        public string MetaDescriptionEn { get; set; }

        public int HomePageDisplayBlockID { get; set; }

        public bool? IsActive { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Tiêu đề không được bỏ trống")]
        [StringLength(500, MinimumLength = 5, ErrorMessage = "Tiêu đề phải nhiều hơn 5 ký tự & không quá 500 ký tự")]
        public string Title { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Tiêu đề không được bỏ trống")]
        [StringLength(500, MinimumLength = 5, ErrorMessage = "Tiêu đề phải nhiều hơn 5 ký tự & không quá 500 ký tự")]
        public string TitleEn { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Nội dung không được bỏ trống")]
        public string Content { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Nội dung chi tiết không được bỏ trống")]
        public string ProductDetail { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Nội dung không được bỏ trống")]
        public string ContentEn { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Nội dung chi tiết không được bỏ trống")]
        public string ProductDetailEn { get; set; }

        public string DeliveryDetail { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Hình tiêu đề không được bỏ trống")]
        public string ImageSmallURL { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Hình nội dung không được bỏ trống")]
        public string ImageLargeURL { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Hình tiêu đề không được bỏ trống")]
        public string ImageSmallURLEn { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Hình nội dung không được bỏ trống")]
        public string ImageLargeURLEn { get; set; }

        public DateTime CreatedAt { get; set; }

        public string CreatedBy { get; set; }

        public DateTime LastUpdatedAt { get; set; }

        public string LastUpdatedBy { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Giá không được bỏ trống")]
        public string Price { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Giá không được bỏ trống")]
        public string PriceEn { get; set; }

        public string GetFullURL()
        {
            string s0 = webDomain;
            string s1 = this.SupTypeIDString;
            string s2 = this.TypeIDString;
            string s3 = this.UniqueString;

            string fullURL = string.Join("/", new string[] { s0, s1, s2, s3 });

            return fullURL;
        }
    }
}
